﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Data.OleDb;

namespace DiaryPlanner
{
    public partial class MemoNew : Form
    {
        Memo thisMemoObject;
        int color = 0;//yellow

        Color yellow=System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
        Color blue=System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
        Color green=System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
        Color pink=System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));

        public MemoNew(Memo memoObject)
        {
            thisMemoObject = memoObject;
            
            InitializeComponent();
            skinSet();


            newDate.Text = System.DateTime.Now.ToString(); //현재 시간
            //MemoNewText.Text = "";

        }
        public void skinSet()
        {
            string skin = UserProfile.Instance().setting;
            if (skin == "b")
            {
                this.BackColor = System.Drawing.Color.PaleTurquoise;

            }
            else if (skin == "c")
            {
                this.BackColor = System.Drawing.Color.LawnGreen;
            }
            else if (skin == "d")
            {
                this.BackColor = System.Drawing.Color.MistyRose;

            }
            else
            { //skin=="a"
                this.BackColor = System.Drawing.SystemColors.ControlLight;

            }
        }

        private void button1_Click(object sender, EventArgs e)//저장하기 버튼
        {
            if (MemoNewText.Text == ""||MemoNewText.Text == " " || MemoNewText.Text == "  " || MemoNewText.Text == "   ")
            {
                MessageBox.Show("내용을 입력하세요");
                return;
            }

            MemoPost thisMemoPost = new MemoPost(thisMemoObject);
            thisMemoPost.memoDate.Text = newDate.Text;
            thisMemoPost.ResetText();
            thisMemoPost.memoText.Text = MemoNewText.Text;            
            thisMemoPost.color = this.color;


            switch (color) { 
                case 0:
                    thisMemoPost.memoText.BackColor = yellow;
                    thisMemoPost.memoDate.BackColor = yellow;
                    thisMemoPost.BackColor = yellow;
            
                    break;
                case 1:
                    thisMemoPost.memoText.BackColor = blue;
                    thisMemoPost.memoDate.BackColor = blue;
                    thisMemoPost.BackColor = blue;
                    break;
                case 2:
                    thisMemoPost.memoText.BackColor = green;
                    thisMemoPost.memoDate.BackColor = green;
                    thisMemoPost.BackColor = green;
                    break;
                case 3:
                    thisMemoPost.memoText.BackColor = pink;
                    thisMemoPost.memoDate.BackColor = pink;
                    thisMemoPost.BackColor = pink;
                    break;

            }



            


            
            thisMemoObject.MemoList.Add(thisMemoPost);//memopost 배열에 추가
            
            
            //다시 뿌려줌
            thisMemoObject.viewAllMemo();



            /***********************db
             * thisMemoPost.memoDate
             * thisMemoPost.memoText
             * thisMemoPost.color
             * db에 새로 삽입
             */
            save_db(thisMemoPost.memoDate.Text, thisMemoPost.memoText.Text, thisMemoPost.color);

            this.Close();    
            
        }

        private void button2_Click(object sender, EventArgs e)//취소 버튼
        {            
            this.Close(); //그냥 닫고 끝냄
        }

      

        private void panel4_Paint(object sender, EventArgs e) //yellow
        {
            panel1.BackColor = yellow;
            MemoNewText.BackColor = yellow;
            newDate.BackColor = yellow;
            color = 0;
        }

        private void panel2_Paint(object sender, EventArgs e) //blue
        {
            panel1.BackColor = blue;
            MemoNewText.BackColor = blue;
            newDate.BackColor = blue;
            color = 1;
        }

        private void panel3_Paint(object sender, EventArgs e) //green
        {
            panel1.BackColor = green;
            MemoNewText.BackColor = green;
            newDate.BackColor = green;
            color = 2;
        }

        private void panel5_Paint(object sender, EventArgs e) //pink
        {
            panel1.BackColor = pink;
            MemoNewText.BackColor = pink;
            newDate.BackColor = pink;
            color = 3;
        }

        private void save_db(string date, string memotext, int color)
        {

            try //예외처리문
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                        + "data source = "  //데이터 소스=(경로입력하라는거)
                                        + Application.StartupPath ///상대경로 읽어옴
                                        + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [memos]";//memos테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);

                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당

                DBAdapter.Fill(DS, "memos"); //DS라는 데이터셋에 새로운 memos 테이블에 추가 또는 갱신하겠다고 알림.

                DataTable aTable = DS.Tables["memos"];//memos테이블을 불러와 aTable을 새로 생성해서 저장
                DataRow newRow = aTable.NewRow();

                newRow["memoText"] = memotext;
                newRow["Mdate"] = date;
                newRow["color"] = color;
                newRow["id"] = UserProfile.Instance().userId;

                aTable.Rows.Add(newRow);

                DBAdapter.Update(DS, "memos");
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }


        }
    }
}